#-*- coding:utf-8 -*-

import re
import urllib
import urllib2
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

'''
图片链接的样式：
<img class="height_min" title="周一上起晚了还不着急去上班的是不是没救了" alt="周一上起晚了还不着急去上班的是不是没救了" 
onerror="img_error(this);" src="http://ww2.sinaimg.cn/bmiddle/006HJ39wgy1fgylp5pv45j30dw0cvabp.jpg" />
'''

#使用正则表达式提取图片链接
def crawl1(url):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 LBBROWSER'}
    req = urllib2.Request(url, headers=headers)  # 扣上浏览器的帽子
    page = urllib2.urlopen(req, timeout=20)  # 打开网页，设置访问超时时间
    contents = page.read()  # 获取源码
    # print contents

    reg=re.compile(r'img class.+?src="(.+?\.jpg)"')
    imagelist=re.findall(reg,contents)
    # print imagelist

    for imagelink in imagelist:
        print imagelink
        global x
        print '正在下载第%s张图片' % x
        #核心是urllib.urlretrieve()方法,直接将远程数据下载到本地，图片通过x依次递增命名
        urllib.urlretrieve(imagelink, 'image\%d.jpg' % x)
        x += 1  # 全局变量递增

#使用BeautifulSoup模块提取图片链接
def crawl2(url):#函数名最好见名思意
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 LBBROWSER'}
    req=urllib2.Request(url,headers=headers)#扣上浏览器的帽子
    page=urllib2.urlopen(req,timeout=20)#打开网页，设置访问超时时间
    contents=page.read()#获取源码
    # print contents

    #html.parser是自带的解析方式，lxml更加强大
    soup=BeautifulSoup(contents,'html.parser')#创建一个soup对象，用来解析网页
    soup_girl=soup.find_all('img')#找到标签

    for girl in soup_girl:#遍历list，获取属性
        link=girl.get('src')#获取src图片路径
        print link
        #下载的文件，取一个名字
        global x
        print '正在下载第%s张图片' % x
        urllib.urlretrieve(link,'image\%d.jpg' %x)
        x+=1#全局变量递增


if __name__=='__main__':
    x = 1
    for page in range(1,20):
        url = 'http://www.dbmeinv.com/?pager_offset=%d'%page
        crawl2(url)
        # crawl1(url)
    print '报告：所有图片下载完毕！'




